Computing systems often use a non-volatile memory device, such as a read-only memory (“ROM”) device or a non-volatile random access memory (“NVRAM”) device, to store the system firmware. The firmware provides program code for performing power-on self tests, booting, and for providing support to the operating system and other functions.
When computer systems are designed, there are many different combinations of hardware devices that may be present in the computer system. To support such a wide variety of hardware combinations, the firmware is customized for each particular implementation. In particular, firmware program modules may be added to the firmware, interchanged, or modified according to specific hardware configurations. As various hardware components are added or removed from a computer system motherboard, the firmware must be updated to reflect the configuration change in order for the firmware program modules to properly interact. Because there can be many different hardware combinations, there will also be a corresponding number of different firmware versions. It can be difficult to keep track of the different firmware versions.
It is with respect to these considerations and others that the various embodiments of the invention have been made.